package com.iven.xie.sonwflake.service;

import com.iven.xie.sonwflake.beans.ID;

import java.util.Date;

/**
 * @author xiezhendong
 * @date 2021/7/29
 */
public interface SnowflakeService {

    /**
     * 对时间戳单独进行解析
     *
     * @param time 时间戳
     * @return 生成的Date时间
     */
    Date transTime(long time);

    /**
     * 对id进行解析
     *
     * @param id 生成的ID
     * @return 封装的ID类
     */
    ID expId(long id);

    /**
     * 雪花算法获取id
     *
     * @return id
     */
    long genId();

    /**
     * 根据时间戳和序列号生成ID
     *
     * @param timeStamp 时间戳
     * @param sequence  序列号
     * @return 生成的ID
     */
    long makeId(long timeStamp, long sequence);

    /**
     * 根据时间戳、机器ID和序列号生成ID
     *
     * @param timeStamp 时间戳
     * @param worker    机器ID
     * @param sequence  序列号
     * @return 生成的ID
     */
    long makeId(long timeStamp, long worker, long sequence);
}